package com.tom.architect.party3.day32.simple2.rxlogin;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

import com.tom.architect.party3.day32.simple2.rxlogin.umeng.SHARE_MEDIA;
import com.tom.architect.party3.day32.simple2.rxlogin.umeng.UMAuthListener;
import com.tom.architect.party3.day32.simple2.rxlogin.umeng.UMShareAPI;

import java.util.HashMap;
import java.util.Map;

import androidx.annotation.Nullable;

/**
 * 透明的Activity，便于拿到UMAuthListener的回调。参考 RxPermission的方式实现。
 * 业务隔离类 RxLoginActivity。
 * 必须要注册该Activity。透明的，theme="@android:style/Theme.Translucent.NoTitleBar"
 * <activity android:name=".simple2.rxlogin.RxLoginActivity"
 *              android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
 */
public class RxLoginActivity extends Activity implements UMAuthListener {
    public static final String PLATFORM_KEY = "PLATFORM_KEY";
    private UMShareAPI mUmShareAPI; // TODO 对其进行隔离，避免后续换非友盟的分享方案。

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mUmShareAPI = UMShareAPI.get(this);
        // 登录的平台
        RxLoginPlatform platform = (RxLoginPlatform) getIntent().getSerializableExtra(PLATFORM_KEY);
        // 平台映射转换。
        mUmShareAPI.getPlatformInfo(this, platformChange(platform), this);

        // 默认执行方法。模拟三方登录成功。
        Map<String, String> map = new HashMap<>();
        map.put("name", "Tom");
        map.put("age", "33");
        onComplete(SHARE_MEDIA.QQ, 1, map);
    }

    // 平台的映射转换，业务隔离处理。将自己的平台，转为他们的。
    private SHARE_MEDIA platformChange(RxLoginPlatform platform) {
        switch (platform) {
            case Platform_WX:
                return SHARE_MEDIA.WX;
            case Platform_QQ:
                return SHARE_MEDIA.QQ;
        }
        return SHARE_MEDIA.QQ;
    }


    @Override
    public void onStart(SHARE_MEDIA share_media) {
        RxLogin.staticListener.onStart(share_media);
    }

    @Override
    public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {
        // 结果回传回去。
        RxLogin.staticListener.onComplete(share_media, i, map);
        finish(); // 关闭，避免用户事件不能响应。
        overridePendingTransition(0, 0);
    }

    @Override
    public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {
        // 静态变量，将结果回调回去。
        RxLogin.staticListener.onError(share_media, i, throwable);
    }

    @Override
    public void onCancel(SHARE_MEDIA share_media, int i) {
        RxLogin.staticListener.onCancel(share_media, i);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        // 必须要添加的代码。
        UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
    }
}
